/*
Kakine
ActionScript Framework
Copyright © 2011, PUNY, LLC.

This file is part of KAKINE.

KAKINE is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

KAKINE is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with KAKINE.  If not, see <http://www.gnu.org/licenses/>.
*/ 
package com.puny.utils
{
	 /**
	 * @example To have normal distributed random number,
	 * <listing>
	 * // In this example, 10 is an expectation and 3 is an hwhm. 
	 * // 10 occurs in the highest rate.
	 * // 7(=10-3) or 13(=10+3) occurs in a half rate of 10's occurrence
	 * var gaussian:Gaussian = Random.getGaussian(10,3); 
	 * var f:Number = gaussian.float; 
	 * var n:int = gaussian.integer; 
	 * </listing>
	 * <img src="../../../images/gaussian.jpg"/>
	 */
	public interface IGaussian
	{
		
		/**
		 * normal distributed random number
		 * @return normal distributed random number 
		 * @see com.puny.utils.Random
		 */
		function get float():Number;
		/**
		 * normal distributed random integer
		 * @return 
		 * @see com.puny.utils.Random
		 */
		function get integer():int;
		/**
		 * normal distributed random number. If a negative number is generated, it will be return as a positive.
		 * @return 0 or a positive random number
		 * @see com.puny.utils.IGaussian#float 
		 */
		function get floatPositive():Number;
		/**
		 * normal distributed random number. If a positive number is generated, it will be return as a negative.
		 * @return 0 or a negative random number
		 * @see com.puny.utils.IGaussian#float 
		 */
		function get floatNegative():Number;
		/**
		 * normal distributed random number. If a negative number is generated, it will be return as a positive.
		 * @return 0 or a positive random number
		 * @see com.puny.utils.IGaussian#integer 
		 */
		function get integerPositive():int;
		/**
		 * normal distributed random number. If a positive number is generated, it will be return as a negative.
		 * @return 0 or a negative random number
		 * @see com.puny.utils.IGaussian#integer 
		 */
		function get integerNegative():int;
	}
}